<?php

namespace app\common\model\setting;
use app\common\model\file\FileModel;
use app\common\model\product\ShopProductTypeModel;
use think\Model;

class SettingPriceRangeModel extends Model
{
    // 表名
    protected $name = 'setting_price_range';
    // 表主键
    protected $pk = 'id';
    //评论类型
    const COMMENT_TYPES = [
        ['value' => 0, 'label' => '无需评价','code' => 'WXPJ'],
        ['value' => 1, 'label' => '普通评价','code' => 'PTPJ'],
        ['value' => 2, 'label' => '文字评价','code' => 'WZPJ'],
        ['value' => 3, 'label' => '图文评价','code' => 'TWPJ'],
        ['value' => 4, 'label' => '视频评价','code' => 'SPPJ'],
    ];
    //年龄编码
    const INCREMENT_AGE_CODE = 'Age_limit';
    //增值服务过滤买号条件编码
    const RANGE_CODES =[
        'Age_limit',//年龄限制
        'Crazy_brushing',//禁止狂刷号
        'Gender_restrictions',//性别限制
        'Level_restrictions',//帐号等级限制
        'Naughty_value',//淘气值限制
        'Regional_restrictions',//地区限制
        'Repeat_purchase_before',//复购只允许之前做过
        'R_epurchase',//仅限做过商品浏览单的可接,请谨慎勾选
        'Verification_number',//旺旺照妖镜验号
        'BB88HY',//88会员
    ];
    /**
     * 查询评论名称
     * @Author: 易军辉
     * @DateTime:2024-06-06 17:30
     * @param $value
     * @param $type 1、查询label  2、查询value 3、查询code
     */
    public static  function getCommentType($value,$type=1)
    {
        foreach (self::COMMENT_TYPES as $comment) {
            if ($comment['value'] == $value || $comment['code'] == $value) {
                switch ($type) {
                    case 1:
                        return $comment['label']; // 返回评论名称
                    case 2:
                        return $comment['value']; // 返回value
                    case 3:
                        return $comment['code']; // 返回code
                    default:
                        return $comment['code']; // 未知类型，返回null
                }
            }
        }
    }
    //进店方式类型
    const ENTER_TYPES=[
        ['value'=>0,'label'=>'关键词','code'=>'GJC'],
        ['value'=>1,'label'=>'口令','code'=>'TKL'],
        ['value'=>2,'label'=>'二维码','code'=>'EWM'],
        ['value'=>3,'label'=>'链接','code'=>'LJ']
    ];
    /**
     * 查询进店方式
     * @Author: 易军辉
     * @DateTime:2024-06-06 17:30
     * @param $value
     * @param $type 1、查询label  2、查询value
     */
    public static  function getEnterType($value,$type=1)
    {
        foreach (self::ENTER_TYPES as $status) {
            if ($status['code'] == $value || $status['value'] == $value) {
                switch ($type) {
                    case 1:
                        return $status['label']; // 返回名称
                    case 2:
                        return $status['value']; // 返回value
                    default:
                        return $status['code']; // 未知类型，返回null
                }
            }
        }
    }
    // 关联平台
    public function platform()
    {
        return $this->hasOne(SettingStorePlatformModel::class, 'id', 'store_platform_id');
    }

    // 关联条件
    public function condition()
    {
        return $this->hasMany(SettingPriceConditionModel::class, 'setting_price_range_id', 'id');
    }
    // 关联平台
    public function platforms()
    {
        return $this->belongsToMany(SettingStorePlatformModel::class, SettingPriceAttributesModel::class, 'setting_store_platform_id', 'setting_price_range_id');
    }
    /**
     * 获取平台id
     * @Apidoc\Field("")
     * @Apidoc\AddField("platform_ids", type="array", desc="平台id")
     */
    public function getPlatformIdsAttr()
    {
        return relation_fields($this['platforms'], 'id');
    }
    /**
     * 获取平台名称
     * @Apidoc\Field("")
     * @Apidoc\AddField("platform_names", type="string", desc="平台名称")
     */
    public function getPlatformNamesAttr()
    {
        return relation_fields($this['platforms'], 'title', true);
    }

    // 关联活动分类
    public function productTypes()
    {
        return $this->belongsToMany(ShopProductTypeModel::class, SettingPriceAttributesModel::class, 'shop_product_type_id', 'setting_price_range_id');
    }
    /**
     * 获取活动分类id
     * @Apidoc\Field("")
     * @Apidoc\AddField("product_type_ids", type="array", desc="活动分类id")
     */
    public function getProductTypeIdsAttr()
    {
        return relation_fields($this['productTypes'], 'id');
    }
    /**
     * 获取活动分类名称
     * @Apidoc\Field("")
     * @Apidoc\AddField("product_type_names", type="string", desc="活动分类名称")
     */
    public function getProductTypeNamesAttr()
    {
        return relation_fields($this['productTypes'], 'title', true);
    }

    // 关联商家端示例图
    public function merImage()
    {
        return $this->hasOne(FileModel::class, 'file_id', 'mer_image_id')->append(['file_url'])->where(where_disdel());
    }
    /**
     * 获取商家端示例图链接
     * @Apidoc\Field("")
     * @Apidoc\AddField("mer_image_url", type="string", desc="商家端示例图链接")
     */
    public function getMerImageUrlAttr($value, $data)
    {
        return $this['merImage']['file_url'] ?? '';
    }

    // 关联用户端示例图
    public function userImage()
    {
        return $this->hasMany(FileModel::class, 'file_id', 'user_image_id')->append(['file_url'])->where(where_disdel());
    }
    /**
     * 获取用户端示例图链接
     * @Apidoc\Field("")
     * @Apidoc\AddField("user_image_url", type="string", desc="用户端示例图链接")
     */
    public function getUserImageUrlAttr($value, $data)
    {
        return $this['userImage']['file_url'] ?? '';
    }
}
